Variablat super globale
Variablat super globale perfshijne disa nga variablat e brendshme te PHP-se te cilat jane gjithnje te disponueshme te perdoren ne cdo pjese te kodit (in all scopes). Pavaresisht lokalitetit ato jane te aksesueshme gjithnje, dhe ne mund ti perdorim ne funksione, klasa apo skedare te ndryshem pa bere ndonje gje te vecante.
Disa nga variablat super globale te PHP-se jane:
$_SERVER
$_POST
$_GET
$_REQUEST
$_FILES
$_SESSION
$_SERVER
$_SERVER
eshte nje variabel super globale qe mban informacion rreth header-ave, pathet, dhe vendet e skripteve te ndryshme.
Shembull:
<?php
//Te jep pathin e skedarit aktual qe po ekzekutohet
echo $_SERVER['PHP_SELF'];
//Te jep domeinin e serverit ku ndodhen skedaret
echo $_SERVER['SERVER_NAME'];
//Te jep domeinin e serverit ku ndodhen skedaret
echo $_SERVER['HTTP_HOST'];
//Te jep info ne lidhje me brouserin e kompjuterit klient ku po aksesohet
echo $_SERVER['HTTP_USER_AGENT'];
//Te jep porten e lidhjes se bere me serverin
echo $_SERVER['SERVER_PORT'];
$_POST
$_POST
perdoret per te mbledhur te dhena pasi i kemi bere submit nje forme ne HTML e cila e ka atributin method='post'
.
Ne rast se kemi nje forme te caktuar ne HTML qe merr si input nje emer dhe nje mbiemer, si me poshte:
<form method='post' action="index.php">
Emri: <input type="text" name="emri">
Mbiemri: <input type="text" name="mbiemri">
<input type="submit" value="Submit">
</form>
Ne atributin action
te formes kemi percaktuar se pasi ti bejm submit formes, ajo do te trajtohet tek skedari index.php
. Pasi klikohet butoni Submit
, do te ridrejtohemi tek skedari index.php
dhe ne mund ti aksesojme te dhenat e futura nga perdoruesi tek ky skedar, si ne shembullin e meposhtem:
<?php
//Skedari index.php
//Printon emrin qe ka dhene perdorues
echo $_POST['emri'];
//Printon mbiemrin qe ka dhene perdorues
echo $_POST['mbiemri'];
Duhet te kemi parasysh qe $_POST
eshte nje array associative, ku celesat e tij (key) formohen nga atributet name
te inputeve ne formen e HTML.
$_GET
$_GET
perdoret gjeresisht per te mbledhur te dhena te futura nga perdoruesi nepermjet formave te HTML-se (kur behen submit), por vetem nga format te cilat e kane atributin method='get'
. Gjithashtu $_GET
mbledh te dhena te kaluara nepermjet URL-se, si me poshte:
<html>
<body>
<a href="index.php?emri=Alban&mbiemri=Afmeti">Testoni $_GET</a>
</body>
</html>
Nese do te klikojme mbi linkun e mesiperm, do te ridrejtohemi tek URL-ja index.php?emri=Alban&mbiemri=Afmeti
. Pjesa index.php
eshte emri i skedarit ku jemi ridrejtuar. Ndersa pjesa ?emri=Alban&mbiemri=Afmeti
jane parametra te kaluara nepermjet URL-se, te cilat ndertohen ne nje format te caktuar. Si fillim vendoset nje pikepyetje (?
) pas pathit te URL-se, dhe me pas formohen cifte celes=vlere
(key=value
) te lidhura me simbolin &
. Ne rastin e URL-se se mesiperme kemi 2 celesa emri
dhe mbiemri
me vlerat respektive Alban
dhe Afmeti
.
Ne skedarin index.php
ne mund ti aksesojme keto vlera me ane te variablit super global $_GET
i cili ashtu si $_POST
eshte nje array associative me celesa te formuar nga ato te ardhur nepermjet URL-se.
Shembull:
<?php
//Skedari index.php
//Printon emrin qe eshte kaluar nepermjet URL-se
echo $_GET['emri'];
//Printon mbiemrin qe eshte kaluar nepermjet URL-se
echo $_GET['mbiemri'];
$_REQUEST
$_REQUEST
eshte nje variabel super global i cili mban vlerat e dy array-ve te tjere super global $_POST
dhe $_GET
. Pra $_REQUEST
mund te perdoren si ne rastin kur u bejme submit formave, ashtu edhe kur kalojme te dhena nepermjet URL-se.
P.sh. ne dy rastet e mesiperme te dhenat mund ti aksesojme edhe ne kete menyre:
<?php
//Skedari index.php
//Printon emrin qe ka dhene perdorues
echo $_REQUEST['emri'];
//Printon mbiemrin qe ka dhene perdorues
echo $_REQUEST['mbiemri'];
//Printon emrin qe eshte kaluar nepermjet URL-se
echo $_REQUEST['emri'];
//Printon mbiemrin qe eshte kaluar nepermjet URL-se
echo $_REQUEST['mbiemri'];
$_FILES
Ne shume raste eshte e nevojshme qe nepermjet formave HTML te ngarkohen edhe skedare te ndryshem si p.sh. nje dokument, nje imazh etj. Per te bere te mundur kete gje perdoren input te tipit file
.
Shembull:
<form action="upload.php" method="post" enctype="multipart/form-data">
Zgjidh imazhin per tu ngarkuar:
<input type="file" name="file">
<input type="submit" value="Ngarko Imazhin">
</form>
Ne kete rast shohim qe forma ka nevoje per nje atribut shtese te quajtur enctype="multipart/form-data"
, e cila lejon ngarkimin e skedareve ne forme. Duke klikuar mbi inputin e tipit file
do te na jepet te zgjedhim nje skedar nga kompjuteri yne per ta ngarkuar. Me pas kur klikojme butonin Ngarko Imazhin
forma do te behet submit. Si mund ta aksesojme skedarin e ngarkuar?
Per kete arsye na sherben variabli super global $_FILES
, te cilin mund ta perdorim ne skedarin upload.php
(i percaktuar tek atributi action
i formes), si me poshte:
<?php
//skedari upload.php
//Jep madhesine e skedarit te ngarkuar
echo $_FILES["file"]["size"];
//Jep emrin e skedarit te ngarkuar kur ishte ne kompjuterin klient
echo $_FILES["file"]["name"];
//Skedari i ngarkuar me nje emer te ri te perkohshem
echo $_FILES["file"]["tmp_name"];
Skedari qe ngarkohet ruhet ne server me nje emer te perkohshem dhe ne nje direktori te perkohshme, ndaj ne duhet ta zhvendosim ate ne direktorine qe duam, me nje emer te ri ose me te njejtin emer qe skedari kishte ne kompjuterin klient.
Emrin e skedarit qe kishte ne kompjuterin klient e aksesojme nepermjet $_FILES['skedari']['name']
.
Zhvendosja e skedarit:
<?php
//Per te ruajtur skedarin ne server:
$target_file = "uploads/" . $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
$_SESSION
Nje sesion eshte nje menyre per te ruajtur informacion (ne variabla) ne menyre qe te mund te perdoren ndermjet faqeve te ndryshme. Informacioni ruhet ne server dhe jo ne kompjuterin e klientit.
Cfare eshte nje sesion?
Kur nje perdorues hap nje aplikacion ne web, ai shfrytezon sherbime, mund te beje ndryshime dhe ne fund e mbyll ate. Kjo gje pak a shume perfshin nje Session. Kompjuteri klient e di se kush je ti, kur e ke hapur aplikacionin dhe kur e ke mbyllur ate. Por kompjuteri server nuk ka informacion te detajuar se kush je ti dhe cfare po ben ti, sepse adresa HTTP nuk permban nje informacion te tille.
Variablat e sesionit e zgjidhin kete problem duke ruajtur informacion te perdoruesit ne menyre qe te perdoret neper te gjitha faqet. Variablat e sesionit ruhen deri ne momentin qe perdoruesi mbyll brouserin.
Ne menyre qe te perdorim sesionet, ne duhet fillimisht ta fillojme ate si me poshte:
<?php
//Fillojme sesionin
session_start();
Me pas, mund te krijojme disa variabla sesioni qe te kemi mundesi ti perdorim me vone:
<?php
// Vendosim variabla sesioni
$_SESSION["perdoruesi"] = "Alban Afmeti";
$_SESSION["profesioni"] = "Programues";
Pasi kemi vendosur keto variabla sesioni, do te kemi mundesine ti perdorim ne te gjitha faqet e tjera te aplikacionit tone:
<?php
//Printon emrin e perdoruesit
echo $_SESSION["perdoruesi"];
//Printon profesionin e perdoruesit
echo $_SESSION["profesioni"];
Ne shume raste mund te jete e nevojshme qe te fshijme nje variabel sesioni, ndaj perdorim nje funksion te brendshem te PHP-se te quajtur unset
.
<?php
//Fshijme nje variabel sesioni
unset($_SESSION["profesioni"]);
Duhet te kemi kujdes sepse, pasi kemi fshire nje variabel sesioni, nuk mund ta perdorim me ate, pasi kjo gje gjeneron gabim.
Ne rastin e mesiperm kemi fshire vetem nje variabel sesioni, por ka raste qe do te na duhet te pastrojme (te fshijme) te gjitha variablat e sesionit.
Shembull:
<?php
//Fshijme te gjitha variablat e sessionit
session_unset();
//Shkaterrojme sessionin
session_destroy();